EC2 (Amazon Linux) に Ruby on Rails + Passenger + Apache 環境を構築する
はじめに
EC2 (Amazon Linux AMI) に Rails アプリを Passenger + Apache で公開する、というお仕事をしたので環境構築方法をメモしておきたいと思います。Rails アプリを Apache を使って公開したいときの参考にしていただければと思います!
Ruby のインストール
はじめに Ruby をインストールします。まず Ruby の実行環境に必要なパッケージをインストールします。
sudo yum install \ git make gcc-c++ patch \ libyaml-devel libffi-devel libicu-devel \ zlib-devel readline-devel \ mysql mysql-devel sqlite sqlite-devel
次に rbenv を使って Ruby をインストールします。まずは rbenv のインストールですが、いろいろ面倒なので rbenv-install.sh というファイルを作って実行するようにします。
vim rbenv-install.sh chmod 755 rbenv-install.sh sudo ./rbenv-install.sh
rbenv-install.sh は以下のようにします。
rbenv-install.sh
MY_GROUP="ec2-user" if [ "$MY_GROUP" = "" ] ; then echo '!!! undefined variable MY_GROUP.' echo '!!!' echo '!!! ex.) MY_GROUP=staff' echo '!!!' exit 1 fi cd /usr/local git clone git://github.com/sstephenson/rbenv.git rbenv mkdir rbenv/shims rbenv/versions chgrp -R $MY_GROUP rbenv chmod -R g+rwxX rbenv git clone git://github.com/sstephenson/ruby-build.git ruby-build cd ruby-build ./install.sh echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile.d/rbenv.sh echo 'export PATH="/usr/local/rbenv/bin:$PATH"' >> /etc/profile.d/rbenv.sh echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
これで rbenv のインストールが終わったので Ruby をインストールします。
rbenv install 1.9.3-p429 rbenv global 1.9.3-p429 gem install bundler --no-ri --no-rdoc
以上で完了です。rbenv のパスが通っていない場合は再ログインすると通るようになると思います。
Apache & Passenger のインストール
次に Apache と Passenger をインストールします。まずは Apache です。
# 必要なパッケージのインストール sudo yum install httpd httpd-devel curl-devel # 自動起動 chkconfig /etc/init.d/httpd chkconfig httpd on chkconfig --list httpd
これでブラウザでアクセスしてみると Apache が起動している状態になっているはずです。
次に Passenger をインストールします。
gem install passenger --no-ri --no-rdoc passenger-install-apache2-module
インストール中に以下のように表示されると思います(環境によって異なる場合があります)。これは /etc/httpd/conf.d/passenger.conf という設定ファイルを新規作成し、その中に記述します。
LoadModule passenger_module /usr/local/rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/passenger-4.0.5/libout/apache2/mod_passenger.so PassengerRoot /usr/local/rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/passenger-4.0.5 PassengerDefaultRuby /usr/local/rbenv/versions/1.9.3-p392/bin/ruby
これで Apache + Passenger のインストールが完了しました。
アプリを置いてみる
環境作っただけでは分かりづらいので、Rails アプリを作って置いてアクセスしてみます。今回は /var/work というフォルダを作成し、そこにプロジェクトを置きます。
mkdir /var/work mkdir /var/work/sample && cd /var/work/sample # Rails アプリのひな形を作る bundle init vim Gemfile # gem 'rails' のコメントアウトを外す bundle install --path vendor/bundle --without production bundle exec rails new . --skip-bundle # assetをプリコンパイル RAILS_ENV=production bundle exec rake assets:precompile
ここまでできたら /etc/httpd/conf.d/rails.conf という設定ファイルを作り、中身は以下のようにします。
<VirtualHost *:80> ServerName sample DocumentRoot /var/work/sample/public RailsEnv production <Directory /var/work/sample/public> AllowOverride all Options -MultiViews </Directory> </VirtualHost>
これで完了です。ブラウザでアクセスしてみると無事に起動していることが確認できました!
まとめ
以上、簡単ではありますが Amazon Linux に Ruby on Rails + Apache + Passenger な環境を作るメモでした。同じような環境を作りたいときの参考にしてください!